#pragma once
#include "Binding/BoundBinaryOperator.hpp"
#include "Binding/BoundExpression.hpp"

class BoundBinaryExpression : public BoundExpression
{
public:
    SharedBoundExpression     Left;
    SharedBoundBinaryOperator Op;
    SharedBoundExpression     Right;

public:
    BoundBinaryExpression(SharedBoundExpression left, SharedBoundBinaryOperator op, SharedBoundExpression right)
        : BoundExpression(BoundNodeKind::BinaryExpression, op->Type), Left(left), Op(op), Right(right)
    {
    }

public:
    virtual std::vector<SharedBoundNode> GetChildren() override { return {this->Left, this->Right}; }
};